package org.ReportDesigner.reportModel;


import org.ReportDesigner.configurator.Configuration;
import org.ReportDesigner.controlModel.Type;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import org.apache.log4j.Logger;

import java.util.LinkedList;
import java.util.List;


/**
 * @see -
 */
@Type(type = "mixed", subType = "footerTable", name = "ftable")
public class FooterTable extends ReportElement {
    private static final Logger log = Logger.getLogger(FooterTable.class);

    private String textFooter;


    @Override
    public String getText() {
        return textFooter;
    }

    @Override
    public void setText(String text) {
        this.textFooter = text;
    }



    @Override
    public List<Element> addTo(Configuration configuration) {
        //создаем список последовательных элементов объекта
        List<Element> elementList = new LinkedList<Element>();
        //проверяе наличие текста
        if (!this.textFooter.isEmpty()){
            Phrase phrase = new Phrase(this.getText(),
                    FontFactory.getFont(configuration.getFont(), configuration.getFontEncoding()));
            elementList.add(phrase);
        }
        //проверяем наличие дочерних объектов
        if (!this.getBody().isEmpty()){
            //создаем табличную часть в соответствии с размером
            PdfPTable table = new PdfPTable(this.getBody().size());
            //проходим по дочерним элементам
            for (ReportElement element: this.getBody()){
                PdfPCell cell = new PdfPCell();
                //проходим по представление дочерних элементов
                for (Element element1: element.addTo(configuration)){
                    cell.addElement(element1);
                }
                table.addCell(cell);
            }
            elementList.add(table);
        }

        return elementList;
    }
}
